package com.woniuxy.classdeans.controller;

import com.woniuxy.classdeans.utils.WebSocketUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;


/**
 * 王艳辉
 * websocket服务监听
 */
@RestController
//表示处理websocket请求的类  作用类似requestmapping
@ServerEndpoint("/WebSocketController/{token}")
@Slf4j
public class WebSocketController {
	/**
	 * @param token
	 * @param session websocket的连接
	 */
	//当建立连接时执行
	@OnOpen
	public void onOpen(@PathParam("token") String token,Session session) {
		//String uname = JwtUtil.getUname(token); //根据token获取用户名
		String uname="18371458685";

		log.info("连接上的token为："+token);
		WebSocketUtil.User.put(uname, session);
		//发送消息给所有人
	}

	//收到消息后
	@OnMessage
	public void onMessage(@PathParam("token") String token,String message) {
		//发送消息 
		WebSocketUtil.sendAll(message);
	}

	/**
	 * session关闭时
	 * @param token
	 * @param session
	 */
	@OnClose
	public void onClose(@PathParam("token")String token,Session session) {

		//删除当前session
		WebSocketUtil.User.remove(token);
		
		//关闭session
		try {
			session.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
